import axios from 'axios';
import {useUserStore} from "@/stores/userStore.js";

// 创建 axios 实例
const instance = axios.create({
    baseURL: import.meta.env.VITE_API_BASE_URL, // 使用环境变量配置基础 URL
    timeout: 10000, // 请求超时时间
    headers: {
        'Content-Type': 'application/json', // 默认请求头
    },
});

// 请求拦截器
instance.interceptors.request.use(
    (config) => {
        const userStore = useUserStore()
        // 在发送请求之前做些什么（例如添加 token）
        const token = userStore.currentToken;   // 获取token
        if (token) {
            config.headers.Authorization = `Bearer ${token}`;
        }
        return config;
    },
    (error) => {
        // 对请求错误做些什么
        return Promise.reject(error);
    }
);

// 响应拦截器
instance.interceptors.response.use(
    (response) => {
        // 对响应数据做些什么
        return response.data; // 直接返回响应数据
    },
    (error) => {
        // 对响应错误做些什么
        if (error.response) {
            // 请求已发出，但服务器响应状态码不在 2xx 范围内
            switch (error.response.status) {
                case 401:
                    console.error('Unauthorized, please login again.');
                    break;
                case 404:
                    console.error('Requested resource not found.');
                    break;
                case 500:
                    console.error('Server error, please try again later.');
                    break;
                default:
                    console.error('An error occurred:', error.message);
            }
        } else if (error.request) {
            // 请求已发出，但没有收到响应
            console.error('No response received:', error.request);
        } else {
            // 其他错误
            console.error('Request setup error:', error.message);
        }
        return Promise.reject(error);
    }
);

export default instance;